package rnClasses;

import java.io.File;
import java.io.FileFilter;
import java.io.FileNotFoundException;
import java.util.Scanner;


public class ContarLinhas {
	
	private static Long count;
	private static Long classNumber;
	
	static class Filtro implements FileFilter{

		public boolean accept(File pathname) {
			if (pathname.getName().endsWith(".java"))	return true;
			else if (pathname.isDirectory()) 				return true;
			else if (pathname.getName().endsWith(".xml")) return true;
			else if (pathname.getName().endsWith(".jsp")) return true;
			return false;
		}
		
	}
	
	// little bug
	public static String getLinhas(File diretorio){
		count = new Long (0);
		classNumber = new Long (0);
		percorrerDiretorios(diretorio);
		return String.valueOf(count);
	}


	private static void percorrerDiretorios(File diretorio) {
		File[] list_file = null;
		if (diretorio.isDirectory()){
			list_file = diretorio.listFiles(new Filtro());
			for (File f : list_file)
				percorrerDiretorios(f);
		}
		else  {
			if (diretorio.getName().endsWith(".java"))
			classNumber ++;
			count += contar_linhas(diretorio);
		}
		
	}
	
	
	private static int contar_linhas(File file){
		int c=0;
		Scanner fScanner;
		try {
			fScanner = new Scanner(file);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			return 0;
		}
		while (fScanner.hasNextLine()){
			fScanner.nextLine();
			c++;
		}
		return c;	}


	public static final Long getClassNumber() {
		return classNumber;
	}


	public static final void setClassNumber(Long classNumber) {
		ContarLinhas.classNumber = classNumber;
	}
	
	
		


	
	

}
